package com.hyts.network.task;

import java.util.concurrent.Callable;

/**
 * project-name:gitee-extends-toolbox
 * package-name:com.hyts.ext.network.task
 * author:Libo/Alex
 * create-date:2018-10-27 20:53
 * copyright:libo-hyts-github
 * email:libo2dev@aliyun.com
 * description:此类主要用于: 任务执行器
 */
public abstract class AbstractExecutor<P,R,T> extends AbstractTask<T> implements Callable{


        //输入参数
        private P param;

        //输出参数
        private R result;


        /**
         * 任务客户端模型对象构造器
         *
         * @param clientModel
         */
        public AbstractExecutor(T clientModel) {
                super(clientModel);
        }

        /**
         * 任务客户端模型对象构造器
         * @param task
         */
        public AbstractExecutor(AbstractTask<T> task){
                super(task.getClientModel());
        }

        public AbstractExecutor() {

        }

        public abstract R result();

        @Override
        public Object call() throws Exception {
            return this.result();
        }

}
